package per.hx.bs.web.sys.service;


import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.context.annotation.Primary;
import org.springframework.web.bind.annotation.*;
import per.hx.bs.base.domain.ReturnDTO;
import per.hx.bs.entity.sys.SysJobDO;
import per.hx.bs.entity.sys.SysUserDO;
import per.hx.bs.util.Query;

import java.util.List;
import java.util.Map;

/**
 * @author HuXing
 * @date 2018/4/29  0:38
 */
@Primary
@FeignClient(value = "Huxingbs-Sys-Service")
public interface SysJobService {

    /**
     * 获取岗位数据
     *
     * @param map 条件
     * @return 集合
     */
    @PostMapping(value = "sys-service/job/listJob")
    List<SysJobDO> listJob(@RequestBody Map<String, Object> map);

    /**
     * 统计岗位数量
     *
     * @param map 条件
     * @return 数量
     */
    @PostMapping(value = "sys-service/job/countJob")
    Integer countJob(@RequestBody Map<String, Object> map);

    /**
     * 添加岗位
     *
     * @param jobDO 岗位信息
     * @return 插入结果
     */
    @PostMapping(value = "sys-service/job")
    Integer insert(@RequestBody SysJobDO jobDO);

    /**
     * 通过id获取岗位信息
     *
     * @param id id
     * @return 岗位信息
     */
    @GetMapping(value = "sys-service/job/{id}")
    SysJobDO selectOne(@PathVariable("id") Long id);

    /**
     * 修改岗位信息
     *
     * @param jobDO 岗位信息
     * @return 膝盖结果
     */
    @PutMapping(value = "sys-service/job")
    Integer update(@RequestBody SysJobDO jobDO);

    /**
     * 删除岗位信息
     *
     * @param ids id
     * @return 结果
     */
    @PostMapping(value = "sys-service/job/ids")
    Integer remove(@RequestBody Long[] ids);

    /**
     * 插入用户信息
     *
     * @param sysJobDO 岗位任命信息
     * @return 插入结果
     */
    @PostMapping(value = "sys-service/job/user")
    ReturnDTO insertUserJob(@RequestBody SysJobDO sysJobDO);

    /**
     * 用户列表
     *
     * @param map 条件
     * @return 结果
     */
    @PostMapping(value = "sys-service/job/userList")
    List<SysUserDO> selectUserList(@RequestBody Map<String, Object> map);

    /**
     * 统计数量
     *
     * @param map 条件
     * @return 数量
     */
    @PostMapping(value = "sys-service/job/userCount")
    Integer countUserList(@RequestBody Map<String, Object> map);

    /**
     * 移除岗位
     *
     * @param userId 用户id
     * @return 影响行数
     */
    @DeleteMapping(value = "sys-service/job/user/{userId}")
    Integer removeUser(@PathVariable("userId") Long userId);
}
